Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Языки программирования

Тренды среди языков программирования в 2019 году

Все, кто хочет связать свою жизнь с программированием, задумываются о том, на какой язык замахнуться. Здесь важно не только понимать, как обстоят дела сегодня, но и следить за трендами — ведь к тому времени, как обучение закончится, что-нибудь в картине мира наверняка поменяется. В этом посте мы вместе с экспертами Geekbrains посмотрим, что говорят опросы, и оценим, какие языки завоевывают мир, а какие уже уходят в прошлое.

Популярные языки программирования

Начнём с традиционно популярных языков, Как известно, любой распространенный язык имеет в запасе минимум 10 лет, чтобы специалисты в нём оставались востребованными на рынке.
Согласно рейтингам авторитетного портала PYPL, основывающихся на популярности поисковых запросах Google в разных странах, самым востребованным языком сегодня является Python. Он обошёл Java ещё летом прошлого года, и количество запросов с тех пор увеличилось на 4,5%.

По версии портала TIOBE, учитывающего не только Google, а все поисковые системы, первое место давно и уверенно удерживает как раз Java. При этом статистика этого портала подтверждает, что языки живут в противофазе: Java за год потерял 0,9%, в то время как Python набрал 1,93 пункта.

Известная софтверная компания JetBrains на своём официальном сайте опросила 7 тысяч разработчиков. Результаты следующие: JavaScript первый, на втором месте Java (оставим HTML/CSS и SQL за скобками), на третьем Python. При этом у Python вновь лучший прирост аудитории за год — 9 %.

Вот что о феномене Python говорит преподаватель факультета искусственного интеллекта GeekUniversity Сергей Ширкин:

«Python очень прост в освоении – можно быть новичком в программировании и уже писать на нём рабочие программы. В своё время это подошло Data Science, потому что большую часть контингента в этой сфере составляли математики и физики, но не профессиональные программисты. В итоге самые популярные библиотеки для работы с большими данными – на Python.

Единственное, что ограничивает язык – низкая скорость работы программ, особенно если мы сравниваем с C/C++. При этом в Python есть такие библиотеки, как numpy, которая, благодаря тому, что часть кода написана на C и Fortran, почти не уступают в производительности.

Сейчас Python проникает в область квантовых вычислений и квантового машинного обучения. Сейчас уже для этого есть библиотеки Qiskit, Cirq, PennyLane, дальше – больше. Здесь уже скорость исполнения программ на Python не важна, ведь все операции проходят на квантовом компьютере, быстродействие которого на порядки выше».

Языки программирования «второго эшелона»

При взгляде на рейтинг PYPL также бросается в глаза взлёт Kotlin: четыре позиции за год и итоговое 12 место.  Пользователи на сайте JetBrains отдали языку 9 место. Причин взлёта две.

Первая — это обновление языка в конце лета. Тогда были устранены многие проблемы и расширена функциональность, с сопутствующим введением всех новых фичей в IntelliJ IDEA – популярнейшую среду программирования. Вторая причина — в прошлом году язык Kotlin получил статус предпочтительного для разработки Android-приложений.

Вот что думает об этом декан факультета Android-разработки GeekUniversity Александр Аникин:

«Если в прошлом году Kotlin стал предпочтительным для Android, то в этом, по сути, главным. Теперь весь новый код, библиотеки, обновления и примеры будут писаться разработчиками платформы на Kotlin. Для этого есть 3 основные причины:

  • Юридический уход от Java. Не секрет, что Oracle в последние годы всё больше ограничивает бесплатное использование Java, что больше всего, пожалуй, затрагивает Android.
  • Полная взаимозаменяемость языков. Можно легко перейти с одного языка на другой не изменив ни строчки кода.
  • Kotlin = Java 2.0. Это современный язык, имеющий те же возможности, что и родитель, но улучшенный с учётом текущих тенденций.

Вообще Kotlin сегодня видится языком без сдерживающих факторов. На нём можно писать не только мобильные приложения, но и серверную часть, приложения для десктопов и многое другое. Он быстро развивается, его разработчики учитывают критику, следят за тенденциями. Поэтому ближайшие годы популярность Kotlin будет неизменно расти».

Другой заметный язык – Rust, который также выделяется в рейтинге PYPL. Год назад мы узнали о том, что это один из самых любимых языков у посетителей портала Stack Overflow. Rust очень медленными шагами идёт к замещению C/C++ в клиентских и серверных веб-приложениях. Этим он обязан популярному формату инструкций для виртуальной машины WebAssembly, поддерживающему все три вышеназванных языка.

Кроме того, он поддерживает и Go — язык к которому также стоит присмотреться. Согласно JetBrains, у Go ожидается самый большой прирост популярности в ближайшие 12 месяцев.

Менее распространенные языки программирования

У языков программирования, не входящих в топы рейтингов, очень сложно оценить потенциал. Количество поисковых запросов, как правило, плохо отражает реальность – из-за низких цифр в статистику вмешивается специфика региона и местных компаний. Из тех, на которые стоит обратить внимание гикам (а больше это, пожалуй, никому и не надо): Elixir, Dart и Ballerina.

Если о первых двух вы наверняка что-то слышали и читали, — а Dart даже многие успели похоронить — то о последнем стоит сказать чуть подробнее. Ballerina – это молодой и крайне интересный язык. Его синтаксис — комбинация из Java, Python, JavaScript и Go, со статической типизацией. Основные операции имеют привычный вид, поэтому на обучение не уйдёт много времени. Но куда интересней в Ballerina другое — направленность на интеграцию. В современном вебе, где постоянно взаимодействуют сотни серверов и сервисов, ценность языков с модулями, легко обеспечивающими это, крайне высока. Как альтернативу Ballerina можно взять на заметку Pulumi и Dark – будущее веба без языков инфраструктуры невозможно.

Однако, несмотря на все прелести и перспективы этих языков, браться за их изучение новичкам не следует – лишь представителей первого и отчасти второго разделов стоит рассматривать как фундамент современного программиста. Знание Elixir, Dart, Ballerina или Pulumi поможет понять, что у любой задачи есть множество решений.

Подробней об изучении разных языков программирования можно почитать на страницах факультетов Geekbrains — Python, Go, Java, а также веб-, iOS-, Android-разработки. Удачного выбора!

Пройти обучение

13 ноя 19, 12:36
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Какие языки программирования сейчас в тренде

В любой профессии есть пакет инструментов, которые используются изо дня в день. В IT это язык программирования и среда разработки. Зачастую именно исходя из них студенты выбирают направление деятельности. Причем главным аргументом выступает не удобство, а практический интерес — что проще изучить и носители какого программного языка наиболее востребованы на рынке. Мы попробовали разобраться в этом самостоятельно, но от вашей оценки в комментариях тоже не отказываемся. Так получится сделать картину объективной.

TIOBE

Один из самых популярных источников, ежемесячно публикующий рейтинг популярности языков программирования, в июле выпустил очередной топ-лист:

  1. Java.
  2. C.
  3. Python.
  4. C++.
  5. C#.
  6. Visual Basic .NET.
  7. JavaScript.
  8. PHP.
  9. SQL.
  10. Objective-C.

Для тех, кто незнаком с тем, как составляется этот рейтинг, — краткий ликбез. За основу берутся запросы в поисковых системах, в том числе из социальных сетей. Отсеиваются аномальные пики, локальные поисковики (например, из КНР) и данные систем, имеющих низкий рейтинг доверия из-за количества багов, взломов и подобного. Кроме того чтобы попасть в этот топ популярных языков программирования, он должен обязательно иметь страницу в Википедии — своеобразный тест на полноту.

На первый взгляд, рейтинг может показаться объективным. Но есть несколько важных доводов, почему это не показатель реальной востребованности.

  1. Языки, которые изучаются в школах и вузах, имеют конкурентное преимущество. Ученики и студенты чаще «гуглят», а по численности они едва ли уступают готовым профессионалам.

  2. В некоторых случаях система полностью игнорирует поисковики отдельных стран. В частности, за Рунет отвечает только Google.ru. Данные с Mail.ru и Яндекса учитываются в пределах статистической погрешности.

  3. Сложность языка тоже играет роль — чем он проще и чем лучше документация, тем меньше люди обращаются к поиску в интернете.

То есть формально на вершине хит-парада TIOBE может оказаться условный Basic, если вместе с материалами курса студентам будут говорить, какой поисковой системой пользоваться при выполнении домашних заданий.

PYPL

Измеряет популярность языков аналогичным образом, но ограничивается лишь системами Google и не ранжирует их по странам. Вот как выглядит этот рейтинг в июле:

  1. Python.
  2. Java.
  3. JavaScript.
  4. C#.
  5. PHP.
  6. C/C++.
  7. R.
  8. Objective-C.
  9. Swift.
  10. Matlab.

Несмотря на похожие с TIOBE методы анализа, рейтинги языков программирования заметно отличаются. В первую очередь надо обратить внимание на лидерство Python. Как утверждает портал, на сегодняшний день это наиболее стремительно развивающийся язык, в то время как Java движется в обратном направлении. Даже график есть:

Минусы в подсчете рейтингов PYPL и TIOBE близки, но динамика изменения позиций со временем в первом прослеживается куда лучше.

GitHub

Самый популярный и авторитетный портал для работы с кодом тоже составляет рейтинги языков, но только по годам. Подсчет ведется по количеству размещенных исходников за последние 12 месяцев. Рейтинг, опубликованный в начале 2019 года:

  1. JavaScript.
  2. Java.
  3. Python.
  4. PHP.
  5. C++.
  6. C#.
  7. TypeScript.
  8. Shell.
  9. C.
  10. Ruby.

Большое влияние на рейтинг GitHub оказывает продуктивность разработчиков. Именно поэтому в лидерах оказалось много представителей скриптовой направленности — объем кода исходников часто занимает всего несколько строк. Но — в отличие от предыдущих двух порталов — здесь практически не имеет значения сложность языка.

StackOverflow

Формально рейтинг StackOverflow формируется по двум параметрам: частоте упоминания на форуме и рейтингу в специальном ежегодном голосовании. Итоги за 2018 год:

  1. Python.
  2. JavaScript.
  3. Java.
  4. C#.
  5. PHP.
  6. C++.
  7. R.
  8. SQL.
  9. Swift.
  10. C.

В голосовании StackOverflow есть много номинаций для ЯП, в данном случае учтены только ответы на вопрос «На каком языке программирования вы работаете?». В результате не появилось неожиданных позиций, поэтому рейтинг можно считать вполне объективным. Кстати, вы можете посмотреть на изменение списка в динамике и сделать выводы.  

RedMonk

Портал RedMonk задался целью составить топ языков программирования по востребованности, основываясь на топ-листах GitHub и StackOverflow. От первого они взяли количество опубликованных исходников, от второго — упоминания в тегах. Получился такой список: 

  1. JavaScript.
  2. Java.
  3. Python.
  4. PHP.
  5. C#.
  6. C++.
  7. CSS.
  8. Ruby.
  9. C.
  10. Objective-C.

На картине зависимости можно заметить, что отличия в лидирующей группе крайне минимальны, и лидер может меняться хоть каждый месяц.

Итого

Обобщая результаты, можно смело говорить, что эта тройка сейчас правит на рынке:

  • JavaScript;
  • Python;
  • Java.

У этих языков множество отличий — как в структуре, так и направленности. Так что ключевые факторы для выбора — личные предпочтения в синтаксисе и области работы.

А что по душе вам?


9 сен 19, 14:02
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Учим языки программирования как иностранные

Вы задумывались, почему языки программирования так называются? Ведь поговорить на них невозможно. Они должны преобразовать задачу, поставленную человеком, в четкий алгоритм. Примерно так же работают дорожные знаки: они указывают водителю, где можно проехать, а где нельзя, нужно ли снизить скорость или можно разогнаться, разрешена ли парковка. Многие знаки прямо предписывают действия. Но никто не называет систему дорожных знаков языком.

Сходства и различия

На первый взгляд, между компьютерными и человеческими языками нет ничего общего. Изучение иностранных языков — гуманитарная область, а программирование — техническая специальность. Да и служат эти языки разным целям. 

Самое существенное отличие между человеческими и компьютерными языками заключается в более высокой степени абстракции языков программирования. Они имеют дело не с объектами физического мира, а с отвлеченными понятиями, каждое из которых нужно сначала понять. Даже такой простой термин, как переменная, надо объяснять. А есть и более сложные — например, инкапсуляция и полиморфизм.

Иностранный язык всегда немного напоминает родной. Все люди живут в одном материальном мире. Часть слов мы можем усвоить сразу: table — стол, а cat — кошка. Некоторые более абстрактные вещи тоже понятны — как hello или good morning.

Встречаются и более сложные конструкции, смысл которых не очевиден — вряд ли новичок сумеет с ходу разобраться, почему how do you do означает «как дела?», а take care — «береги себя». В этих выражениях перевод отдельных слов мало что дает для понимания смысла. Подобные словосочетания лучше запоминать целиком, не вникая в их внутреннюю логику. 

В языках программирования тоже есть элементы, которые понятны сразу — как операторы сложения (+) или умножения (*). Но существуют и конструкции, которые на первых порах приходится заучивать. Например, тег, открывающий код на JavaScript:

<script type="text/javascript">

Новичок может не понимать, как работает конструкция, почему необходима именно такая структура. Правильная стратегия — просто принять их как факт и включать в код механически. Сначала придется копировать шаблоны и структуры из учебных пособий, чтобы позже понять, как работает каждый элемент языка. Нарабатывая опыт и глубже изучая механизмы языка, мы начинаем деконструировать сложные структуры, чтобы включать их в свой код более осознанно и творчески.

Если приглядеться, можно найти еще больше сходств между человеческими и компьютерными языками. И те и другие имеют структуру и принципы, по которым работают, — иначе говоря, семантические и синтаксические правила. А еще у каждого языка есть словарный состав. 

Словарный запас

Усвоить лексику иностранного языка непросто. Слова могут принципиально отличаться по звучанию от аналогов в вашем родном языке, и зачастую их приходится просто зазубривать. При этом для общения активный словарь должен включать порядка 400 слов — и этого хватит только для разговора на повседневные темы.

С языками программирования попроще. Выучить надо наименования ключевых слов, операторов и идентификаторов. Даже в самом богатом языке программирования их используется ограниченное количество. 

Кроме того, большинство ключевых слов (if, void, while, for или print) взяты из английского языка. И если он вам знаком, будет просто запомнить их и увязать с новыми значениями.

Синтаксис

Но заучить слова мало — надо еще усвоить принципы, по которым они образуют языковые конструкции. Такие правила называются синтаксисом — он определяет структуру и форму языка. 

В английском вопросительные предложения отличаются от повествовательных обратным порядком слов: «Mark will go to the park» и «Will Mark go to the park?». Только корректная конструкция даст вашему собеседнику понять, сообщаете вы ему новую информацию или ждете ответа от него. 

Чтобы компьютер понял, чего вы от него хотите, надо знать синтаксис языка программирования. Неправильные синтаксические конструкции приводят к ошибкам при компиляции (если язык компилируемый) или при исполнении (если интерпретируемый). А еще — к неправильным результатам вычислений или ошибочным действиям. Простой и универсальный пример — скобки в математических расчетах, которые повышают приоритет части выражения. 

result := a + (b * 2) / c

и 

result := (a + (b * 2)) / c

Эти выражения дают разные результаты при одинаковых значениях переменных a, b и c. 

Усвоить синтаксис — одна из самых сложных задач при изучении языка программирования с нуля. Вероятно, большую часть времени, затраченного на создание программы, вы будете исправлять ошибки компилятора, вызванные некорректным синтаксисом. 

В человеческих языках много устоявшихся за века иррациональных конструкций. А компьютерные изначально проектировались так, чтобы исключить такие сложности. Ни в одном популярном ЯП вы не встретите ситуации, когда два ключевых слова используются в одинаковых ситуациях по разным синтаксическим правилам. Если в конце инструкции следует ставить точку с запятой, то так же надо поступать во всех инструкциях и во всех случаях. Каким бы сложным ни был программный код, какие бы редкие и особенные ключевые слова ни использовались в нем — завершать инструкцию будет всегда точка с запятой, а не другие символы. 

Семантика

Если синтаксис отвечает за техническую корректность конструкций языка, то семантика — за смысловое наполнение. В человеческом языке это сложная область: у одного слова может быть много прямых, переносных и контекстуальных значений. А еще есть фразеологизмы с особой семантикой. Кроме того, человеческие языки тесно связаны с культурой — заучить слова и правила недостаточно, нужно знакомиться с историей и традициями.

В плане семантики языки программирования устроены значительно проще. Смысл ключевого слова не изменятся в зависимости от контекста, ситуации или культурного бэкграунда программиста. Семантика ЯП — это про осмысленность языковых конструкций, а в более широком смысле — про проверку правильности программ. Точнее, она используется для формальной верификации — то есть математического доказательства, что текст программы не содержит ошибок алгоритма и соответствует целям, ради которых создавался.

Главное — видеть цель! 

Когда изучают иностранный язык, преследуют конкретную цель: общаться с зарубежными партнерами, подготовиться к путешествию, прочитать Шекспира и Гете в оригиналах.

Цель нужна и при обучении программированию: найти работу в IT, создать гениальное приложение или разработать программу для себя. Цель — это стрелка компаса, которая поможет ориентироваться в программировании. 

Первый язык — самый сложный

Первый язык выучить сложнее всего — это справедливо в лингвистике, и в программировании. Вам встретится множество новых сложных концепций, усвоить которые может быть нелегко. 

Сосредоточьтесь на изучении одного языка. Вы не сможете освоить сразу все — и даже пять самых популярных разом не осилите. Это не только трудно, но и непрактично. Вы ведь не стали бы одновременно изучать японский, немецкий и зулусский, не так ли? Так же нет смысла пытаться охватить сразу Python, Swift, Java и C++.

Выбирайте один и последовательно изучайте его. У всех языков общие принципы — когда вы их усвоите, новые языки будут даваться проще. Потребуется только знакомиться с новым «словарем» и синтаксисом.

Elementary. Hello, world!

Знакомясь с иностранным языком, вы прежде всего узнаете, как сказать «Привет». И чаще всего в первую очередь при изучении ЯП разбирают, как вывести на экран приветствие «Hello, world!».

Затем вы переходите к изучению начального словаря и базовых правил грамматики. В программировании аналогом будут простейшие понятия — переменные и их типы, методы, операторы и ключевые слова. Это кирпичики, из которых строится любая программа.

На этом этапе все совершают ошибки — и учатся на них. Важно экспериментировать с языком, «играть» с кодом, добавлять и убирать конструкции и элементы. Не бойтесь сломать код! Ошибки и сбои анализируйте и пробуйте исправить. Все это поможет лучше разобраться, как язык работает, и развить навыки в кодировании.

Intermediate

Достигнув среднего уровня, уже можно более свободно использовать иностранный язык — читать книги или смотреть фильмы, разговаривать с носителями языка. 

Intermediate в программировании — это когда вы хорошо понимаете принципы, по которым язык функционирует, усвоили все необходимые понятия и можете ими свободно оперировать. И, конечно, уже способны написать программу. Вероятно, к этому времени вы напишете уже сотни строк работающего кода! 

Но чтобы стать хорошим разработчиком, нужно освоить язык гораздо глубже. У вас уже есть фундамент знаний и представление о структуре языка. А главное — есть понимание, что именно нужно изучать. Ошибки все еще случаются, но решения вы ищете уже увереннее. 

Наступает момент, когда знаний уже хватает, чтобы разрабатывать несложные проекты, но все еще недостаточно, чтобы взяться за что-то по-настоящему значимое. Можно почувствовать, что, несмотря на успехи, до профессионализма еще далеко. 

Не отчаивайтесь! Помните, что это нормальная часть обучения. В начале пути вы быстро шли вперед — потому что постигали самые простые вещи. Чтобы приобрести более сложные навыки, требуется больше времени, и прогресс будет уже не таким быстрым. Запаситесь терпением. Если чувствуете, что топчетесь на месте, — дайте себе немного отдохнуть, чтобы не перегореть. Решайте задачи на своем нынешнем уровне, общайтесь с коллегами. А когда почувствуете силы — продолжайте совершенствовать знания и навыки!

Advanced

На этом уровне вы сможете свободно разговаривать с носителями языка. Понимание, что вы способны выразить любую мысль и чувство на иностранном языке, дает невероятное ощущение свободы общения.

С языками программирования — похожая история. Вы будете чувствовать себя уверенно с новыми проектами и задачами. Столкнувшись с очередной проблемой, не впадете в ступор и не броситесь судорожно искать решение. Опыт поможет сразу нащупать оптимальный путь. И даже в особенно трудных ситуациях вы будете точно знать, где искать помощь и совет, а все сложности будете воспринимать как приключение. 

Но время почивать на лаврах в программировании не наступает никогда. Это область, которая развивается и меняется быстро. Стоит остановиться — и с трудом завоеванное мастерство начнет угасать. Самодовольный разработчик недолго остается востребованным специалистом. 

Хорошая новость: когда вы достигнете этой ступени, уже сможете самостоятельно освоить практически любой язык программирования. И это невероятно круто. Потому что с иностранными языками это не работает: даже если вы свободно разговариваете на немецком, французском и суахили, для изучения китайского вам снова придется начинать с азов. А программисту потребуется только освоить немного понятий нового языка, запомнить его ключевые слова, бросить взгляд на синтаксические правила и несколько дней попрактиковаться в новой среде разработки.

Готовимся к первым шагам

Для тех, кто в начале пути, мы сформулировали несколько простых советов.

Не пытайтесь охватить сразу все

Нельзя заговорить на иностранном языке за неделю, как и написать серьезную программу, едва познакомившись с языком программирования. Исключение — опытные разработчики, для которых любой язык — просто еще одна форма, в которую без труда укладываются давно изученные понятия.

Начните с простых понятий и конструкций. Освойте базовый «словарь» — важнейшие ключевые слова языка. Изучите принципы синтаксиса. И двигайтесь дальше! 

Возьмите учебник, а не документацию

Документация к языку — это хороший источник для программиста. Но в большинстве случаев она дает сжатую справочную информацию — это подходит тем, кто уже знает язык и умеет на нем программировать.

Начать изучение ЯП с документации — как взять толковый словарь и пытаться по нему освоить иностранный язык. Да, такой словарь может давать исчерпывающие описания и даже примеры применения слов, но он изначально написан на чужом для вас языке.

Вот почему важно найти хороший учебник или курс, который поможет структурировать материал и сделает его простым и интересным. Когда овладеете терминологией и начальными навыками, можно браться и за документацию. 

Найдите наставника

Есть начинающие программисты, которые предпочитают осваивать язык своими силами. Мы снимаем шляпу перед этими отважными людьми, не боящимися трудностей. Но дело пойдет значительно быстрее, если рядом будет человек, который сумеет объяснить сложные понятия, покажет пример, поможет найти и исправить ошибки.

Погружайтесь в языковую среду

При изучении иностранного языка полезно общаться с его носителями. В идеале — погрузиться в языковую среду, отправившись за границу. Теоретические знания должны подкрепляться постоянной и интенсивной практикой.

В случае с языком программирования вы не можете пообщаться с «носителем» — машина вряд ли поддержит беседу. Но погружение в языковую среду возможно. Для этого нужно как можно больше практиковаться, писать и совершенствовать код. Беглость и уверенность в использовании языка достигаются только постоянной практикой.

Не бойтесь неудач

Никто не рождается со знанием языка — ни компьютерного, ни иностранного, ни даже родного. Поэтому нужно помнить, что на первых порах ошибки не просто возможны — они неизбежны. 

Не опускайте руки: продолжайте трудиться, анализируйте промахи. Не бойтесь попросить помощи у других программистов — своего наставника, коллег или на форуме. Каждый из нынешних профессионалов когда-то был на вашем месте.

Практика, терпение, упорство и опыт — отличная формула для изучения языков программирования!

Пройти обучение

20 авг 19, 16:59
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Почему Go? Важные преимущества, о которых мало кто знает

Стефан Нильссон преподает информатику в Королевском технологическом институте Стокгольма и очень много пишет о языке Go. Предлагаем вам перевод его статьи Why Go? — Key advantages you may have overlooked, где он рассказывает о главных плюсах языка. Статья ориентирована на читателей, уже знакомых с основами программирования, в том числе на Java и/или Python.

Выбрать язык программирования непросто. Отдельные преимущества могут поначалу очаровывать, а выявление недостатков требует времени и опыта.

Как профессор информатики и разработчик, много лет использующий Go и Java, я хочу поделиться мыслями и объяснить, почему я ставлю Go выше, чем Java или Python. И почему с ним мне гораздо проще писать хороший код.

Go — мой основной язык с 2012 года. До этого, с 1998 года, я использовал Джаву, а еще раньше — Си. Python нужен мне главным образом в преподавательской работе.

Заниматься программированием я начал в далеком 1978 году. Тогда я писал для калькулятора TI-57, с его программной памятью на 50 шагов и 8 регистрами.

Минимализм

Unicorn racing towards the Rainbow

Go — минималистичный язык, и это (по большей части) очень хорошо.

Официальная спецификация Go умещается всего на 50 страницах, легко читается и содержит много примеров. Думаю, опытный программист может освоить язык по одной этой спецификации.

«Ядро» Go составляют простые ортогональные конструкции, которые можно сочетать сравнительно малым числом способов. Это упрощает изучение языка, чтение и написание кода.

Когда вы добавляете в язык новую возможность, он не просто усложняется — его сложность возрастает в разы. Потому что возможности могут пересекаться по самым разным сценариям. И это серьезная проблема, ведь сложность языка касается всех разработчиков, а не только тех, кто пишет спецификацию или делает компилятор.

Некоторые из ключевых особенностей Go:

  • Полноценные встроенные фреймворки для тестирования и профилирования программ компактны и просты в изучении. Скорее всего, вам не понадобится ни один из многочисленных аддонов от сторонних разработчиков.
  • Можно отлаживать и профилировать оптимизированный бинарник, который уже запущен в production на HTTP-сервере.
  • Документация к языку Go генерируется автоматически и содержит примеры, которые можно запускать прямо на странице справки [для этого под каждым листингом есть кнопка Run — прим. пер.]. Опять же, интерфейсы минималистичны и не требуют долгого изучения.
  • Go — язык с сильной статической типизацией и явным приведением типов, но его синтаксис на удивление необременителен. Все благодаря нетипизированным числовым константам и определению типа по присвоенному значению. Как результат, в работе с типами Go безопаснее, чем Java (где есть неявное приведение). При этом его код по легкости чтения ближе к Питону, где есть нетипизированные переменные.
  • Программы на языке Go состоят из пакетов, что позволяет понятно делить код и легко управлять зависимостями. Механизм пакетов — пожалуй, в числе наиболее удачно реализованных в языке. И самых недооцененных.
  • Структурно типизированные интерфейсы обеспечивают динамический полиморфизм за счет динамической диспетчеризации.
  • Конкурентность — неотъемлемая часть Go, для нужд которой в языке есть горутины, каналы и оператор select. Чем конкурентность отличается от параллелизма, можно посмотреть здесь.

Небольшие примеры кода, описание базовых типов данных, методов и управляющих структур вы также найдете в статье «Go vs. Java: 15 главных отличий».

Задел на будущее

Futurist mouse trap

В Go нет ряда возможностей, обычных для других современных языков.

Вот универсальный ответ проектировщиков языка на вопрос «Почему в Go нет такой-то функции?».

Каждый язык предлагает новые возможности и не содержит чьих-то любимых. Go был создан с прицелом на удобство программирования, быструю компиляцию, возможность влиять на одну концепцию, не затрагивая другой, и необходимость поддерживать такие вещи, как параллелизм и сбор мусора. Ваша любимая «фишечка» могла сюда не вписаться, потому что увеличивает время компиляции или снижает ясность синтаксиса. Или потому, что она усложнила бы всю модель языка [принципы построения программ — прим. пер.].

Для добавления любой новой возможности нужны веские основания — острая необходимость, которую обосновали бы разработчики реальных проектов.

Вот наиболее вероятные кандидаты на добавление в Go 2:

  • Управление пакетами с помощью модулей, поддержка которых уже была частично реализована в Go 1.11.
  • Обобщенное программирование — концептуальная схема, реализация которой в Go уже запланирована во второй версии языка. Пока вместо обобщенного кода (дженериков) можно использовать альтернативы и обходные пути, расписанные вот здесь.
  • Новая система обработки ошибок — пока тоже на стадии проекта — может заменить нынешние упрощенные механизмы.

Сейчас на рассмотрении более мелкие усовершенствования, которые помогут организовать и опробовать разработку Go с упором на инициативу сообщества.

Тем не менее вряд ли стоит ждать от Go 2 таких нововведений, как опциональные параметры, значения параметров по умолчанию и перегрузка методов.

Сравнение с Java

Спецификация языка Java® сейчас насчитывает 750 страниц. Сложность изучения связана в первую очередь с перегруженностью «фишками» [явление известно как feature creep — прим.пер.].

Вот вам несколько примеров. Внутренние классы внезапно появились в Java в 1997 году. На обновление спецификации ушло больше года, и она увеличилась в объеме почти вдвое. Это высокая цена для функции, появление которой было не критично.

Дженерики в Java, использующие стирание типов (type erasure), делают код яснее и позволяют выполнять дополнительные тесты во время исполнения программы. Но когда нужно выйти за рамки простейших примеров, работа с дженериками усложняется. Вы не можете создавать массивы дженериков, а шаблоны параметров (type wildcards) с нижней и верхней границей довольно сложны. Слово «дженерик» фигурирует в спецификации 280 раз. Лично я не уверен, стоила ли эта штука усилий, затраченных на ее реализацию.

Перечисления (enum) появились в Java в 2004 году как специальный класс, который работает с группой констант. Это, конечно, неплохо, но практически все возможности перечислений можно реализовать с помощью обычных классов. Термин enum упомянут в спецификации 241 раз.

Прозрачность кода

Tangled cables

Блок обработки данных суперкомпьютера ILLIAC IV

Если вы не можете читать и понимать свой код, ваш проект обречен.

  • Вы должны всегда четко знать, что именно делает ваш код.
  • Иногда нужно оценить количество ресурсов (времени и памяти), необходимых для выполнения вашего кода.

Создатели Go постарались сделать так, чтобы обе эти потребности было легко удовлетворить.

Синтаксис языка создан с расчетом на прозрачность и поддерживает только один стандарт оформления кода, который можно автоматически применить утилитой fmt.

Другой пример: Go не скомпилирует программу, если она требует каких-то пакетов (через import), но в реальности не использует их в коде. Такой подход повышает ясность кода, а в долгосрочной перспективе — его производительность.

Подозреваю, что создатели Go нарочно усложнили некоторые вещи. Например, надо очень постараться, чтобы поймать исключение (панику). Причем, чтобы переступить через типобезопасность, вам придется пометить свой код ключевым словом unsafe.

Сравнение с Python

В Python фрагмент кода del a[i] удаляет элементы с индексом i из списка a. Этот код, конечно, вполне читаем, но не прозрачен: легко упустить из вида, что временная сложность алгоритма представлена как O(n), где n — число элементов списка.

У Go нет такой полезной функции. Это не так удобно, зато более прозрачно. Если вы копируете элемент списка, вам нужно явно указать это в коде. Смотрите пример кода: 2 способа удалить элемент из среза в Go. Но можно и проще — с помощью аppend.

Сравнение с Java

Прозрачность кода — проблема не надуманная. Вот пара примеров того, как правила инициализации пакетов и порядка выполнения кода в Go упрощают поддержку и доработку проекта:

  • Циклические зависимости могут вести к нежелательным последствиям. В отличие от кода на Java, Go-программа с зацикленной инициализацией не скомпилируется.
  • Программа на Go завершает работу только из функции main. Java-приложение закрывается после завершения всех пользовательских потоков, не являющихся демонами.

Это значит, что для понимания особенностей в работе Java-приложения нужно изучить большие фрагменты его кода. Это может быть и вовсе невозможно, если вы используете сторонние библиотеки.

Совместимость

Wrench with perfect fit

Язык, который подвержен внезапным изменениям или утрачивает поддержку, может погубить ваш проект.

Для первой версии Go были кратко и сжато сформулированы гарантии совместимости для языкового «ядра» и стандартных библиотек: программы на Go, которые работают сегодня, должны работать и с будущими версиями Go 1. До сих пор обратная совместимость соблюдается безукоризненно.

Go — это проект с открытым кодом и BSD-подобной лицензией, которая разрешает коммерческое использование, внесение изменений, распространение и личное пользование.

Права интеллектуальной собственности принадлежат авторам Go и тем из нас, кто внес вклад в развитие проекта. Кроме того, Google предоставляет пользователям патент на интеллектуальную собственность, распространяемую корпорацией в рамках проекта Go.

Сравнение с Python

Если вы Python-разработчик, вам приходилось мучаться с различиями между Python 2.7.x and Python 3.x. И хотя есть веские основания выбирать Python 3, если вы используете библиотеки, доступные только для 2.7, у вас может не быть выбора.

Сравнение с Java

Lightning And Dark Clouds

У языка Java очень хороший опыт обратной совместимости и подробное руководство по совместимости для JDK 8. Плюс, Java долгое время был в свободном доступе для разработчиков.

К сожалению, на горизонте сгущаются тучи. Причиной тому — судебное разбирательство между Oracle America и Google о сущности компьютерного кода, авторском праве и новой модели лицензирования Java от Oracle.

Производительность

Lightning And Dark Clouds

Снаружи Go неброский, но под капотом у него — прекрасно отлаженный движок.

Бессмысленно обсуждать производительность вне контекста. Такие параметры программы, как время исполнения и потребление памяти, сильно зависят от алгоритмов, структур данных, входных данных, мастерства программиста, операционной системы и «железа».

Тем не менее заметно влиять на производительность могут язык, среда исполнения и стандартные библиотеки. Все это касается высокоуровневых задач и архитектурных решений. Чтобы глубже вникнуть в реализацию компилятора и его производительность, читайте FAQ по Go.

Прежде всего, Go — компилируемый язык. Готовое к запуску Go-приложение обычно выглядит как один исполняемый файл без отдельных динамических библиотек или виртуальных машин, которые можно было бы напрямую разворачивать.

Объем и скорость генерации машинного кода зависят от целевой архитектуры. Генерация кода Go довольно хорошо проработана и поддерживает все основные ОС (Linux, macOS, Windows) и архитектуры (Intel x86/x86-64, ARM64, WebAssembly, ARM и др.). Поэтому от go-приложений можно ждать производительности на уровне C++ или Java. Выигрыш относительно интерпретируемого кода на Python может быть огромным.

В Go есть сборщик мусора, что предотвращает утечки памяти. Причем задержка в работе сборщика минимальна. На деле вы можете даже не замечать, что «поток-мусорщик» запущен.

Практически все стандартные библиотеки исполнены очень качественно: их код оптимизирован по эффективным алгоритмам. К примеру, регулярные выражения в Go работают настолько хорошо, что время исполнения напрямую зависит от объема ввода. К сожалению, с Java и Python все иначе.

Скорость сборки в абсолютных величинах сейчас достаточно хороша. Что еще важнее, Go спроектирован так, чтобы упрощать компиляцию и анализ зависимостей. Это позволяет создавать легко масштабируемые решения для растущих проектов.

Пройти обучение

28 май 19, 14:54
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Итоги года в IT 2018

Вот и подошла пора подводить традиционные итоги года. В обзоре мы рассмотрели, какие языки были популярны в этом году, какие — нет, какими технологиями пользовались разработчики и сколько они в среднем зарабатывали. Итак, к цифрам.

Популярные языки программирования

TIOBE. В топ-5 популярных языков программирования входят Java, C, C++, Python и Visual Basic.NET. Причем в прошлом году пятерка лидеров была почти такой же — только вместо Visual Basic.NET ее замыкал C#. За год существенно поднялись в рейтинге SQL (в прошлом году он даже не вошел в двадцатку), Go (+4 места), Objective-C (+8) и Swift (+8). Objective-C в этом году опередил Swift на одну строчку.

Стремительно теряют популярность Perl — за два года он спустился с 10 на 18 строчку рейтинга, Assembly — с 9 на 15 место за тот же период, Ruby — с 12 на 16 позицию. В 2017 году был всплеск интереса к языку R: он взлетел в рейтинге с 17 на 8 место, в 2018 — снова опустился на 14 строку.  

PYPL. Рейтинг показывает, что учат программисты всего мира. С прошлого года пятерка самых изучаемых языков не изменилась: это Python, Java, JavaScript, C# и PHP, — только они поменялись местами. В прошлом году на первом месте была Java, в этом — Python. В 2017 пятерку замыкал JavaScript, теперь — PHP. Продолжает расти интерес к языкам TypeScript, Go, Lua, Haskell, Julia, хотя в рейтинге TIOBE в двадцатку входит только Go.

В долгосрочной мировой перспективе прослеживаются устойчивые тренды:

  • растет интерес к изучению Python, R, Swift, MatLab, Scala, Go, Kotlin, TypeScript;

  • стабильно привлекают разработчиков Java, C#, JavaScript, C/C++;

  • падает интерес к PHP, Ruby, Perl, VBA, Visual Basic, Objective-C, Delphi.

Stack Overflow традиционно проводит опрос программистов. В 2018 году в нем приняли участие 100 тысяч человек. Топ-5 языков, которые наиболее часто используют профессиональные разработчики, включает JavaScript, HTML, CSS, SQL и Java.

Если рассматривать только языки программирования, в пятерку лидеров войдут JavaScript, SQL, Java, Python и C#. JavaScript занимает первое место уже шесть лет подряд, а быстрее всех набирает популярность Python.

Традиционный вопрос — «Какие языки вам нравятся, какие ненавидите, а какие хотите изучить?» — показывает истинные чувства программистов. Ответы во многом совпали с прошлогодними. Народную любовь сохраняет Rust (37-е место в рейтинге TIOBE, 20-е — в PYPL), всеобщую неприязнь — Visual Basic 6 (20-е место TIOBE, 15-е PYPL). И конечно, все хотят учить Python, JavaScript и Go.

Любят

Ненавидят

Хотят изучить

Rust

Visual Basic 6

Python

Kotlin

Cobol

JavaScript

Python

CoffeeScript

Go

TypeScript

VB.NET

Kotlin

Go

VBA

TypeScript

Swift

MatLab

Java

JavaScript

Assembly

C++

C#

Perl

Rust

F#

Objective-C

C#

Clojure

Lua

Swift

Bash/Shell

Groovy

HTML

Scala

Delphi/Object Pascal

CSS

SQL

C

SQL

HTML

Ocalm

R

CSS

PHP

C

Haskell

Hack

Ruby

Julia

C++

Scala

Java

Erlang

Haskell

R

Ruby

Bash/Shell

Ruby

R

PHP

Erlang

Java

F#

C++

Julia

Assembly

Hack

Haskell

Erlang

PHP

CSS

Clojure

Ocaml

HTML

Objective-C

Интерес вызывает и еще один вопрос из исследования Stack Overflow — «Какие языки ассоциируются у вас с высокой зарплатой?». Первое место занимает F#, разработанный компаний Microsoft в 2005 году. Почитать подробно про него можно в статье «Хочу все знать. F#». Вот первая десятка языков со среднегодовой зарплатой специалистов:

  • F# — 74 000 $;
  • Ocalm — 73 000 $;
  • Clojure — 72 000 $;
  • Groovy — 72 000 $;
  • Perl — 69 000 $;
  • Rust — 69 000 $;
  • Erlang — 67 000 $;
  • Scala — 67 000 $;
  • Go — 67 000 $;
  • Ruby — 64 000 $.

В этом списке мы не видим популярных языков, а некоторые из перечисленных входят в рейтинг неприязни — тем не менее это не мешает профильным программистам зарабатывать с их помощью хорошие деньги. По всей видимости, большие зарплаты обусловлены дефицитом специалистов. Ведь действительно найти разработчика PHP или JS намного проще, чем Perl.

GitHUB представил собственное исследование за 2018 год. По количеству репозиториев самыми популярными языками стали JavaScript, Java, Python, PHP и Ruby.

По числу программистов — JavaScript, Java, Python. Сильно потерял позиции Ruby — он упал с пятой на десятую строку, а Objective-C вообще вылетел из десятки. Его место занял TypeScript, который за год поднялся с 10 на 7 место.

Интересен рост количества разработчиков по каждому языку. Программистов, которые работают на Kotlin, стало больше в 2,5 раза. Также растут HCL, TypeScript, PowerShell и Rust. Подробнее о Kotlin можно узнать в материале «Хочу все знать. Язык Kotlin».

Популярные технологии

Базы данных. Согласно рейтингу PYPL, в 2018 году программисты больше всего изучали Oracle, MySQL, SQL Server, PostgreSQL и MongoDB. Также рос интерес к освоению Redis, Apache Hive, MariaDB, DynamoDB.

За последнее десятилетие:

  • возрос интерес к изучению Apache Hive, DynamoDB, Elasticsearch, Firebase, MariaDB, MongoDB, Redis, SAP HANA, Splunk, Teradata;

  • стабильно привлекают разработчиков Oracle, MySQL, SQL Server, PostgreSQL, Solr, SQLite;

  • снижается интерес к DB2, FileMaker, Firebird, Sybase.

В опросе Stack Overflow разработчики назвали самые используемые базы данных: MySQL, SQL, PostgreSQL, MongoDB, SQLite.

В вопросе «Какие базы данных вам нравятся, какие ненавидите, а какие хотите изучить?» места распределились так:

Любят

Ненавидят

Хотят изучить

Redis

IBM Db2

MongoDB

PostgreSQL

Oracle

Elasticsearch

Elasticsearch

Memcached

PostgreSQL

Amazon RDS/Aurora

Apache HBase

Redis

Microsoft Azure (Tables, CosmosDB, SQL, etc)

Amazon Redshift

MySQL

Google Cloud Storage

Apache Hive

Microsoft Azure (Tables, CosmosDB, SQL, etc)

MongoDB

Cassandra

Google Cloud Storage

MariaDB

SQLite

Cassandra

Google BigQuery

MySQL

Amazon DynamoDB

SQL Server

Neo4j

Google BigQuery

IDE. PYPL посчитал, что больше всего в 2018 году разработчики изучали Visual Studio, Eclipse, Android Studio, NetBeans и IntelliJ. Рос интерес к IntelliJ, Visual Studio Code, Light Table и Eric Python, снижался — к Atom, Xcode, Xamarin, Zend Studio и Coda 2.

В исследовании Stack Overflow популярные инструменты разбиты по направлениям: для сисадминов, web- и мобильных разработчиков. Пятерка общих лидеров включает Visual Studio Code, Visual Studio, Notepad++, Sublime Text и Vim.

Web-разработчики

Мобильные разработчики

Сисадмины

Visual Studio Code

Android Studio

Vim

Visual Studio

Visual Studio Code

Visual Studio Code

Notepad++

Xcode

Notepad++

Sublime Text

Visual Studio

Visual Studio

IntelliJ

Notepad++

Sublime Text

Vim

Sublime Text

IntelliJ

Eclipce

IntelliJ

Atom

Atom

Eclipce

Android Studio

Android Studio

Atom

Eclipce

PyCharm

Vim

PyCharm

Инструменты. В топ-5 самых часто используемых инструментов: фреймворков, библиотек и прочего — входят Node.js, Angular, React, .NET Core, Spring. Разработчики любят TensorFlow, ненавидят Cordova и хотят изучить React. Подробнее про TensorFlow можно узнать в материале «Tenzor Flow — open-sources от Google».

Любят

Ненавидят

Хотят изучить

TensorFlow

Cordova

React

React

Xamarin

Node.js

Torch/PyTorch

Hadoop

TensorFlow

Node.js

Angular

Angular

.NET Core

Django

.NET Core

Spark

Spring

Django

Spring

Spark

Hadoop

Django

.NET Core

Xamarin

Angular

Node.js

Spark

Hadoop

Torch/PyTorch

Torch/PyTorch

Занятость программистов в мире

В исследовании Stack Overflow 2018 обобщили средние показатели по занятости программистов.

Тип занятости. Если в прошлом году 83 % опрошенных работали в компаниях на полной занятости, то в 2018 таких только 76 %. Фриланс остался на том же уровне — 10 %, а количество безработных в поиске нового места увеличилось в пять раз: с 1,3 % в 2017 до 5 % в 2018. Это 4300 человек из 86 тысяч программистов, ответивших на вопрос.

Размер компании. Больше всего программистов трудятся в компаниях с количеством сотрудников от 20 до 99 человек, меньше всего — от 5 до 9 тысяч. За год цифры изменились несущественно, в среднем в пределах одного процента.

Отрасль. Сильного перекоса в сторону одной отрасли нет. Занятость распределена равномерно: 16 % — компании по разработке сайтов и дизайна, по 10 % — IT, SaaS и разработка ПО, 8,8 % — финансовый сектор. Меньше всего программистов работает в медицинских компаниях — 4,5 %.

Поиск работы. Среди всех программистов — и занятых, и безработных — только 24,3 % не интересуются вакансиями. 59,8 % респондентов не ищут их, но готовы рассмотреть предложения, а 15,9 % находятся в активном поиске. Причем больше всего людей, ищущих новую работу, в США — 14,2 %, а минимум — 10,7 % — в Германии.

Среди тех, кто ищет работу, 18,5 % преподавателей или научных работников, 18,1 % — мобильных разработчиков, 18 % — специалистов по Data Science и машинному обучению, 17,9 % — бизнес-аналитиков или аналитиков данных, 17,9 % — гейм-дизайнеров или гейм-девелоперов, 17,7 % — дизайнеров. Меньше всех — управленцев (CEO, CTO и пр.) — 12 %.

Программисты часто меняют работу: 34,6 % вышли на новое место в течение этого года, 22 % — больше года назад, 18,8 % — больше двух лет назад, 18,9 % — больше четырех лет назад. Всего 5,8 % на протяжении всей карьеры работают в одной компании, в Индии таких — 11,2 % программистов.

При выборе компании разработчики смотрят на зарплату и соцпакет (18,3 %), технологии (17,3 %) и дальнейшее профессиональное развитие (16 %). Однако женщины-программисты (4000 респондентов) на первое место поставили «корпоративную культуру» (16,9 %), а зарплату и соцпакет — только на четвертое (14,1 %). Если сравнивать по странам, то больше всего программисты смотрят на зарплату в Великобритании — 81,7 %, меньше всего в Индии — 64 %.

Зарплата. В опросе приняло участие 57 тысяч человек. Больше всего зарабатывают технические руководители (Engineering manager) — 89 тысяч долларов в год, причем в США у них зарплата еще выше — 137 тысяч. На втором месте DevOps-инженеры — 72 тысячи долларов (110 000 в США), на третьем — специалисты по Data Science и machine learning — 60 тысяч долларов (102 000 в США). Меньше всего на мировом рынке зарабатывают мобильные разработчики — 43 000 долларов и разработчики игр — 40 000.

В США топ профессий отличается от мировых. На первых местах — технические руководители, DevOps-инженеры, бэкендеры, дата-сайентисты и мобильные разработчики. Меньше всего платят дизайнерам (85 000 $) и тестировщикам (83 000 $).

На портале Glassdoor автоматически рассчитывается средняя зарплата. Больше всего предлагают специалистам по Data Science — 139 тысяч долларов, меньше всего программистам JavaScript — 72 тысячи.

Зависимость зарплаты. Не обязательно иметь многолетний опыт, чтобы получать высокую зарплату. При пятилетнем стаже Data Scientist может заработать 60 тысяч долларов в год, мобильный разработчик — 44 тысячи, а разработчик игр —  40 тысяч. Но чтобы занять позицию DevOps-инженера с зарплатой 73 тысячи, нужно восемь лет опыта, Product-менеджера — девять лет, а СТО/СЕО и технических управленцев — более десяти лет.

Зависимость зарплаты от использования языка программирования не изменилась за этот год. По-прежнему много платят тем, кто работает на редких ЯП: Clojure, F#, Hack, Go, Scala, Erlang, Groovy. Причем опыт работы имеет меньшее значение, чем язык. Программисты Delphi с двенадцатилетним опытом зарабатывают меньше, чем специалист с пятью годами стажа, работающий на Hack.

Перспективы. Программистам задали вопрос «Чем вы надеетесь заниматься через пять лет?». Ответы распределились так:

  • работать в более крутой компании — 33,9 %;
  • основать собственную — 25,7 %;
  • работать там же/ так же — 19,4 %;
  • работать техническим управленцем — 9,9 %;
  • работать управленцем — 6,6 %;
  • заниматься другим — 2,8 %;
  • уйти на пенсию — 1,7 %.

Занятость IT-специалистов в России

Динамика вакансий. Спрос на IT-специалистов в этом году рос, особенно в летние месяцы. Об этом свидетельствует статистика портала HeadHunter. По сравнению с 2017 годом, в июне и августе количество вакансий увеличилось более чем на 40 %, а в июле — вообще на 79 %.

Однако это связано не с бумом в отрасли, а с общей тенденцией на рынке труда. В первом полугодии преобладали позитивные экономические настроения, поэтому количество вакансий увеличивалось практически во всех сферах. С сентября ситуация ухудшилась, что отразилось на желании организаций нанимать сотрудников.

Информационные технологии входят в десятку сфер с наибольшим количеством размещенных вакансий. Больше, чем айтишников, требуется только продажников, рабочих и сотрудников на производство. По сравнению с прошлым годом, количество IT вакансий выросло на 21 %, но в 2017 году IT-сфера была на втором месте, в 2018 — на четвертом. В общем объеме предложений количество IT-вакансий уменьшилось.

Динамика резюме. IT-соискателей становится больше. Наблюдалось временное снижение летом, но с сентября количество резюме снова выросло. Общий рост за год составляет 13 %.

IT находится на седьмом месте среди направлений с наибольшим количеством размещенных резюме. Среди тех, кто ищет работу, больше всего специалистов без опыта, продажников и административного персонала.

Конкуренция среди соискателей. На конец 2018 года на каждую IT-вакансию приходится 2,8 резюме. Это не самый плохой показатель, и в 2017 году было так же. Например, на каждую вакансию юриста приходится девять резюме, стажера — десять, а руководителя — двенадцать. Меньше всего резюме в областях консалтинга, рабочего персонала, инсталляции и сервиса, а также страхования.

Статистика по городам. Рост числа вакансий и резюме по городам неоднородный. В Тюмени количество вакансий увеличилось на 70 %, а в Самаре — всего на 15 %. В отличие от прошлого года, работодатели размещают предложений больше, чем соискатели — резюме.

Конкуренция среди соискателей сильно различается по городам России. Наибольшая в Краснодаре — на каждую вакансию претендуют четыре человека. Чуть меньше в Иркутске, Уфе и Хабаровске — по трое. Наименьшая конкуренция в Ульяновске — 1,5 резюме и Перми — 1,6. В Москве на каждую вакансию приходится 2,8 резюме, в Санкт-Петербурге — 2,7.

Портрет соискателя. Типовой портрет соискателя за год не изменился. Программист — мужчина 26–35 лет с высшим образованием и опытом работы от трех до шести лет. Есть сходство с типовым респондентом Stack Overflow: это тоже мужчина 24–34 лет с высшим образованием и опытом работы от трех до пяти лет.

Сравнение типового портрета

 

Россия

Мир

Мужчина

81%

92%

Возраст 24/25 — 34/35

59%

50%

Высшее образование

82%

74%

Опыт работы 3-6 лет

26%

27%

Зарплата. По расчетам портала HeadHunter, средняя зарплата IT-специалиста в России — 60 600 рублей. Самая высокая в Москве — 91 000 рублей, минимальная в Саратове — 42 400. За год средняя зарплата в Москве и Санкт-Петербурге выросла на 9 %, в Красноярске — на 13 %, в Новосибирске — на 5 %, а в Нижнем Новгороде не изменилась. Зарплаты часто зависят от динамики резюме и вакансий. Например, за год количество вакансий в Красноярске увеличилось на 51 %, а резюме — всего на 14 %, поэтому и оплата выросла на 13 %.

Десять лет портал Superjob рассчитывает собственный индекс заработной платы в ведущих отраслях. За исходное значение взяты показатели октября 2008 года, и им присвоено 100 пунктов. За десятилетие зарплаты в IT выросли на 80 %, а за 2018 год — на 7 %. Зарплаты в других сферах существенно отстают.

По данным портала Trud.com, средняя зарплата программиста в России — тоже 60 тысяч рублей. Больше всего открыто IT-вакансий в Москве — 43 % от общего количества, в Санкт-Петербурге — 23 % и в Екатеринбурге — 11 %. Почти в 44 % открытых вакансий работодатели предлагают зарплату до 50 тысяч рублей. Только 13 % предложений — с зарплатой свыше 200 тысяч.

На портале «Мой круг» рассчитывают средние зарплаты через анкетирование участников. На вопросы ответили 7 тысяч человек. Средняя зарплата за первое полугодие 2018 года составила 101 тысячу рублей, а за вторую — 97 тысяч. В разрезе специализаций:

  • мобильная разработка — 120 тысяч рублей;
  • десктоп-разработка — 110 тысяч;
  • бэкенд — 100 тысяч;
  • фронтенд — 100 тысяч;
  • менеджмент — 80 тысяч;
  • администрирование — 80 тысяч;
  • тестирование — 75 тысяч.

Самые высокие зарплаты — в мобильной разработке: до 150 тысяч рублей, а минимальные — в администрировании: от 50 тысяч. Верхний предел по языкам программирования:

  • Scala — 250 тысяч рублей;
  • Golang — 225 тысяч;
  • Elixir — 200 тысяч;
  • Objective-C — 200 тысяч;
  • Swift — 200 тысяч;
  • Ruby — 200 тысяч.

Программисты на других языках получают меньше: Python — до 190 тысяч рублей, Java — 185 тысяч, JavaScript — 180 тысяч, PHP — 170 тысяч, C# — 170 тысяч. Самая низкая зарплата у Delphi-программистов — от 30 до 120 тысяч рублей.

Кратко

  1. В рейтинге TIOBE тройка популярных языков — Java, C и C++, в рейтинге PYPI — Python, Java и JavaScript. Согласно опросу Stack Overflow, разработчики чаще всего используют JavaScript, HTML и CSS. В GitHUB самые популярные — JavaScript, Java и Python.
  2. Согласно рейтингу PYPI, в этом году больше всего изучали базы данных: Oracle, MySQL, SQL Server — и IDE: Visual Studio, Eclipse и Android Studio. Stack Overflow выяснил, что чаще всего использовали БД MySQL, SQL и PostgreSQL и IDE Visual Studio Code, Visual Studio, Notepad++. Лидеры среди прочих инструментов — Node.js, Angular и React.
  3. В Stack Overflow посчитали, что 76 % опрошенных работают в компании на постоянке. Количество безработных увеличилось до 5 %, а 76 % активно ищут работу или готовы рассмотреть предложения. Больше всего программистов-мужчин интересует зарплата и соцпакет.
  4. Самые высокие зарплаты получают технические руководители (Engineering manager) — 89 тысяч долларов в год, DevOps-инженеры — 72 тысячи и специалисты по Data Science и machine learning — 60 тысяч. По данным портала Glassdoor, самые высокие средние зарплаты у специалистов по Data Science — 139 тысяч долларов, back-end программистов и инженеров по машинному обучению — по 114 тысяч.
  5. Согласно порталу HeadHunter, спрос на IT-специалистов в России растет. Средняя зарплата по РФ — 60 600 рублей. Самая высокая в Москве — 91 000 рублей, минимальная в Саратове — 42 400. По подсчетам портала Trud.com, средняя зарплата по России тоже 60 тысяч. Согласно анкетам программистов на сайте «Мой круг», средняя зарплата в первом полугодии 2018 года составляла 101 тысячу рублей, во втором — 97 тысяч. Больше платят в мобильной разработке — 120 тысяч и в десктоп-разработке — 110 тысяч.

3 дек 18, 17:57
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Crap! Какой язык программирования заставляет ругаться чаще?

А в совместной работе над проектами ругаться сам рандом велел. Обнаруживая в коде ляпы коллег, любой человек зачастую не выбирает выражений, чтобы донести, каким общим завалом могут обернуться баги.

Поэтому в комментариях к коду часто появляются совсем не литературные слова. А раз международный язык общения программистов — английский, то и ругательства преимущественно англоязычные.

В этой статье выясним, какие языки программирования вызывают у разработчиков больше всего эмоций. Информацию для анализа возьмем с трех крупных веб-сервисов для совместной разработки: Github, Bitbucket и Googlecode. В качестве поисковика используем сервис Searchcode, который позволяет находить отдельные элементы в коде и комментариях к нему. Система утверждает, что в проверочной базе есть 20 млрд строк кода из 7 млн проектов. Пересчитывать не будем — поверим на слово. Найдем «горячие точки», где негодование программистов выражено вербально, и  посмотрим, какая сложится статистика.

Да какие маты на английском? То ли дело на русском!

Существует миф, что в английском языке мало ругательств. Но на самом деле англичане преуспели в словесной брани не меньше, чем русские. Ведь массовая культура зародилась в Британии на 150 лет раньше, чем в Российской империи.

Причина этого мифа до банального проста: большинство русскоговорящих людей учит «академический» английский, который рассчитан на культурное общение. А нецензурную лексику мы преимущественно слышим в фильмах — а там она куда беднее, чем в жизни. Буквально пять ругательств и несколько десятков их производных.

В реальности идиоматических выражений в английском множество. Но наша статья посвящена не этой теме. Если интересуетесь, есть отличная книга «Вашу мать, сэр» (авторы Московцев и Шевченко): 480 страниц отборного английского мата, крепких выражений и сленговых фразочек. Советуем программистам, которые часто спорят с иностранными коллегами.

Для анализа в статье мы взяли 5 наиболее популярных ругательств английского языка:

  • Crap;
  • Fuck;
  • Shit;
  • Damn;
  • Cock.

Перевод угадать нетрудно — слова известные, близкие сердцу. Сначала соберем общую статистику с ресурсов. Затем разберемся, какое ругательство программисты используют чаще всего.

Уверенно лидирует слово «Crap», так что разберем его первым.

Crap

«Crap» не считается грубым ругательством. Это почти полный аналог русского «блин». Поэтому его и употребляют так часто.

Допустил ошибку в своем коде — «Crap!».

Увидел баг в чужом — «Crap!».

Не можешь найти общий язык с программистом — «Crap!».

Слово настолько плотно вошло в лексикон IT-специалистов, что появился специальный CRAP index (Change Risk Analysis and Prediction). Его формула прогнозирует, скажет ли программист «Oh, crap!», когда увидит, какой код ему предстоит поддерживать. CRAP-индекс на практике используют многие программисты — при тестировании, оптимизации и переписывании отдельных участков кода.

Больше всего «crap» используют на Bitbucket — 26 666 раз. При этом примерно 70% из них приходится на упоминание CRAP-индекса или его производных.

Такие фрагменты кода с аналогичными комментариями — норма. В остальных моментах «crap» используют, чтобы выразить отношение к коду или ситуации в целом.

На Googlecode «crap» встречается явно реже. То ли код там лучше пишут, то ли просто CRAP-индекс не используют.

C/C++ лидирует с большим отрывом — здесь «crap» звучит в три раза чаще, чем во всех остальных языках, вместе взятых. Видимо, кодить на С/С++ без ошибок крайне сложно. Или же англоязычное «блин» автоматически отлаживает код и дезинтегрирует ошибки.

Fuck

Продолжаем с самым распространенным ругательством английского языка — «Fuck».  Общее количество употреблений — 15 628 раз (система учитывает все производные от слова, поэтому реальные показатели немного меньше).

При этом программисты используют «fuck» как оскорбление куда реже, чем как междометие и связующее звено в мыслях. Фразы «fuck you», «fuck off» или «motherfucker» встречаются совсем редко. Это радует: мы ведь тут работать пытаемся, а не унижать друг друга.   

Google и здесь отличился. Если на Github и Bitbucket присутствует 7817 и 6888 использований соответственно, то на Googlecode — всего 607. В 10 раз меньше! Совпадение? Не думаю.

Статус наиболее «fucked»-языка неожиданно получил Vimscript.

Все объясняет одна-единственная фраза:

Удивительно, что наиболее распространенное ругательство английского языка заняло не первое место в нашем рейтинге. Все-таки в разработке своя атмосфера.

Зато C/C++ предсказуемо фигурирует в рейтинге. А стабильность — залог успеха.

Shit

Универсальное слово, которое показывает, что код, мягко говоря, не слишком хороший. Всего «shit» использовали 17 598 раз — это больше, чем «fuck», даже с учетом всех его словоформ. Эти слова часто используют вместе во фразе «fuck this shit», в окультуренном переводе — «нахрен вот это вот все». 1785 примеров!

Как думаете, на каком языке чаще всего делают «shit»?

Такая ситуация в С/С++ повторяется куда чаще, чем вы можете себе представить:

Дело в том, что в C/C++ есть много возможностей, нарушающих принципы типобезопасности. И маленькая ошибка в коде может обернуться большими проблемами. Компилятор не контролирует процесс, поэтому программистам приходится изворачиваться, и не все в этом преуспевают.

Что касается ресурсов, где больше пишут «shit», — абсолютно никаких странностей:

На Bitbucket немного больше, чем на Github, но это частности. Зато Google, как всегда, на высоте. И это совсем не потому, что там делают меньше проектов, чем на Github и Bitbucket, не-не-не. Там, конечно, разработчики культурнее.

Damn

Еще один аналог русского «блин» — даже более универсальный, чем «crap». Если «crap» имеет негативный оттенок, то «damn» в целом только эмоционально окрашивает фразу. И судя по частоте его использования в IT, разработчики — ой какой импульсивный народ.

Результат по ресурсам практически полностью повторяет статистику по слову «crap». Github и Bitbucket ругались, а Googlecode рядом стоял и надышался.

И аналитикой по языкам вас не удивим:

В этом туре в компанию затесался Assembly, но общей погоды он не меняет. С/С++ остается лидером из-за количества допускаемых ошибок, на которые нельзя спокойно реагировать.

Иллюстрация к мысли о том, что оптимизм — важная черта характера разработчика на С/С++. По-другому здесь не выжить.

Баги в HTML тоже часто попадаются, но их проще исправлять, и они не приводят к таким печальным последствиям, как одна ошибка в 8000 строках кода, из-за которой падает вся система. Поэтому косяки в HTML не вызывают такого всплеска эмоций.

Cock

Несмотря на то, что это ругательство очень популярно в реальной жизни, разработчики используют его не слишком часто. Возможно, именно потому, что им можно оскорбить человека, а вот описать ситуацию или фрагмент кода не получится.

Судя по статистике, обижать коллег любят программисты на Github. Но если быть совсем честными, именно это слово часто попадает в различные фильтры. И львиная доля от всего числа использований — именно оттуда. А другая часть непонятным образом пришла из описаний неведомых материалов категории «18+». Если смотреть объективно, реальных оскорблений немного.

Интересно, что нигде, кроме Github и Bitbucket, слово «cock» вообще не используют. 63 упоминания в Googlecode — это ни о чем. На других ресурсах и того меньше. Все же это ругательство не типично для программиста.

Здесь лидером рейтинга становится HTML.

Это предсказуемо: фильтры на нецензурные слова ставят там, описания тоже есть. Вот и получается, что все HTML-проекты скинулись и набрали на первое место.

А так выглядит фильтр цензуры на Python:

В стандартном фильтре примерно 550 строк, и там учтены практически все матерные выражения и их аналоги, которые используют пользователи.

И у нас есть победитель!

По статистике использования нецензурных слов и выражений побеждает С/С++ — с большим отрывом. Если бы такой был у бегуна-марафонца, он бы мог на дистанции попить кофейку с печеньками, вздремнуть часик-другой и все равно победить в забеге.

Все же сложность структуры языка влияет на эмоциональную стабильность программистов. И С/С++, судя по нашей статистике, не способствует душевной гармонии разработчиков. Одна ошибка — и ее придется ловить вручную. Встретите программиста на С/С++ — дайте ему конфету, поддержите.

А если это вы сам, помните, что ругаться — нормально. Во всяком случае, чтобы на самом деле не убить коллегу за ошибку, которую не можете найти уже 2 дня. Хорошего настроения и кода без багов!

Бонусы для читателей

Ловите бесплатный доступ на три месяца изучения английского на онлайн-курсах EnglishDom до 30 июля 2018 года.

Будем рады видеть вас на индивидуальных занятиях курса «Английский для IT-специалистов».


9 июл 18, 15:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Программирование в химии: интервью с Джузеппе Балакко

Большинство людей ассоциируют IT в первую очередь с разработкой мобильных приложений, веб-сайтов, игр. Но «фронт» работы программистов гораздо шире. Вряд ли вы с ходу назовёте хоть одну сферу, куда ещё не внедрена электроника.

Чтобы доказать это, перенесёмся в мир химии. О том, как из учёного стать крутым программистом, не меняя сферы деятельности, мы поговорили с основателем компании Nucleomatica, разработчиком ПО для спектроскопии ядерного магнитного резонанса iNMR Джузеппе Балакко.

Джузеппе, начнём с главного — что такое спектроскопия ядерного магнитного резонанса? Где она применяется?

— Спектроскопия ядерного магнитного резонанса (NMR) позволяет оценить молекулярную структуру вещества, его количественный и качественный состав. С середины ХХ века это один из популярнейших аналитических подходов в химии. Конкретной сферы применения нет: NMR востребована как в научных экспериментах, так и  в медицине, промышленности.

К примеру, вы нашли волшебный порошок, который превращает автомобиль в трансформер. Естественно, вы захотите узнать, из чего он состоит, и попробовать его воспроизвести. Самый верный способ установить состав — спектроскопия ядерного магнитного резонанса. Также с помощью NMR компания может контролировать поставщиков сырья.

В медицине ядерный магнитный резонанс используется при диагностике заболеваний головного мозга. В сочетании с МРТ он даже заменяет хирургическую биопсию новообразований.

NMR-спектрометр

В основе метода лежит явление ядерного магнитного резонанса. Попробую объяснить упрощённо: все ядра имеют заряд, а некоторые — ещё и полуцелые спины. Возможно, вы помните, как в школьном курсе химии раскладывали «стрелочки» (протоны и нейтроны) по парам в «клеточках» (характеризующих энергетический уровень), а в итоге оставались одинокие «стрелки» и «клетки». В этом случае под действием переменного внешнего поля магнитные ядра могут менять энергетический уровень, поглощая энергию. Преобразования в них можно фиксировать в зависимости от частоты излучения извне.  Регистрация этих явлений позволяет построить спектр зависимости и определить состав вещества. Для организации исследования, фиксации и интерпретации результатов используется программирование.

Программирование в классическом представлении: на популярных языках в общедоступных средах разработки? Или это работа со специальными языками и ПО?

— Нет, самое обычное программирование, но с обширным кругом задач: работа с устройствами ввода-вывода, протоколами, интерфейсами, аналого-цифровыми и цифро-аналоговыми преобразователями, а также представление этой информации пользователю в удобной форме.

Именно поэтому на рынке фактически нет такой профессии, как NMR-программист. Как правило, это или IT-специалисты широкого профиля, или химики с дополнительным образованием. Кроме того, в NMR есть объективные ограничения: высокая точность требует много времени и ресурсов (гелия, запас которого на планете ограничен, сверхпроводящих магнитов и прочего). То есть услуга дорогостоящая. В перспективе, с открытием новых технологий, NMR может стать более доступной и применяться массово, но пока это не так.

Какие языки программирования вы используете?

— Преимущественно С, так как требуется большая производительность. Но также приходится иметь дело с C++, Lua, Objective-C и веб-набором HTML–CSS–PHP.

По образованию я не программист, а химик, и всем языкам обучался сам. Первым был BASIC, потом я переключился на Pascal, и затем — на C. Когда начинал карьеру, рынок специализированного ПО был очень мал, поэтому пришлось учиться программировать, чтобы решать профессиональные задачи самостоятельно.

Можете посоветовать книги?

— Для изучения многих языков, в том числе Pascal, C, Python, есть серия книг «Numerical Recipes in…». Это собрание типовых задач и решений. Очень полезно для тех, кто делает первые шаги в программировании, но не хочет тратить много времени на самостоятельный поиск ответов на тривиальные вопросы.

По C рекомендую книгу «C: a Software Engineering Approac» Питера А. Дарнелла. Она как раз посвящена созданию ПО на инженерном уровне, где важна производительность и надёжность.

По Lua могу посоветовать «Programming in Lua» Роберто Иерусалимши: здесь можно найти ответы на все вопросы по языку.

Ваше мнение, как лучше обучаться: интернет-курсы, книги, навороченные среды разработки?

— Нет универсального ответа — необходимо всё совмещать. У меня был неудачный опыт онлайн-обучения, но преимущественно потому, что я не мог делиться своими соображениями и замечаниями. Но это частный случай, а в перспективе, безусловно, интернет-курсы —  эффективный способ. При этом без книг и онлайн-документации обойтись нельзя.

Что касается использования мощных средств разработки новичками, то это может быть даже полезно, если к ним прилагается качественная документация. Главное — никогда не опускать руки. По своему опыту могу сказать: большинство трудностей, с которыми приходится сталкиваться, связаны не столько с программированием, сколько с нежеланием искать несколько вариантов решения.


1 июн 18, 16:15
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

11 шагов к созданию языка программирования

Мотивы создания нового языка программирования всегда очень разные: кто-то делает это от скуки, кто-то с целью преодоления существующих барьеров, кто-то для собственного удобства. Вы тоже можете попробовать создать собственный язык, руководствуясь следующими 11 пунктами. Кто знает, возможно, вы станете заметной личностью в мире программирования?

Изучите устройство компьютера

Это правило важно не только для тех, кто желает создать новый язык, но и для тех, кто просто сел за программирование. Вы не можете создать ничего стоящего, если не понимаете, как один код преобразуется в другой и исполняется компьютером. Без понимания того, как функционирует машина, вам будет очень сложно принимать решения в дальнейшем.

Изучите терминологию

В дальнейшем речь пойдёт о парсерах и лексерах, компиляторах и интерпретаторах, синтаксических деревьях и многом другом. Вам будет значительно проще черпать информацию из сети, спрашивать советов у опытных разработчиков, если у вас не будет пробелов в терминологии. Вкупе с пониманием технологий – это фундамент для постройки рабочего языка.

Определитесь с назначением языка

Сразу решите, будет ли ваш язык иметь узкую специализацию или ваша цель – универсальный инструмент, который окажется востребован в любой области IT. Оцените объём работы, которой вам предстоит проделать, поставьте цели, которых вы хотите достичь. Ну и самое главное – определитесь: вы хотите покорить мир или просто попробовать для себя что-то новое?

Очертите основные концепции

Есть ряд вопросов, на которые необходимо ответить:

  • Компиляция или интерпретация? Компилируемый код целиком собирается в машинный, после чего исполняется. Интерпретируемый код разбирается и выполняется построчно. Здесь, как и во всех дальнейших вопросах, нет однозначно правильного ответа, вам предстоит выбирать между удобством, функциональностью, безопасностью, производительностью и прочими аспектами.
  • Статическая или динамическая типизация? В первом случае пользователь должен самостоятельно задавать типы данных, во втором – вам придётся описать систему для определения типов.
  • Будет ли язык содержать автоматический сборщик мусора или ручное управление памятью?
  • Какую вы планируете использовать модель программирования: ООП, логическое функциональное, структурное? А может, вы собираетесь изобрести что-то принципиально новое?
  • Будет ли ваш язык поддерживать вставки из других языков программирования?
  • Содержит ли язык базовые функции или все возможности будут поддерживаться из внешних библиотек?
  • Как будет выглядеть архитектура программы?

Эти вопросы помогут сформировать облик будущего языка и породят ряд новых базисных вопросов, на которые тоже придётся дать ответы.

Поэкспериментируйте с синтаксисом

Наличие служебных символов может здорово упростить работу машине и увеличить производительность, но будет отталкивать потенциального пользователя. То же самое с видом функций – простые и интуитивно понятные или максимально отражающие действие.

Дайте название языку

Время перейти к самому простому – подобрать название. Большинство разработчиков не вкладывает глубокий смысл в это действие, давая языку простое, легко запоминаемое имя. Советуем и вам придерживаться этого посыла. Мудрёные аббревиатуры или многословные названия, с одной стороны, не привлекают пользователей, с другой - быстро вылетают из памяти.

Выберите язык для языка

Новый язык надо на чём-то написать. Суровые гики могут использовать язык ассемблера или машинные коды, но в XXI веке куда больше смысла ориентироваться на высокоуровневые языки: Pascal, C, C++, Swift (компилируемые языки) для интерпретируемого варианта; Java, JavaScript, Python, Ruby (интерпретируемые языки) — для компилируемого. Такие пары обеспечат минимальные потери в производительности.   

Поработайте над лексером и парсером

Лексер – инструмент, отвечающий за лексический анализ, разбиения кода на составные единицы, называемые токенами. Парсер, отвечающий за синтаксический анализ, организует иерархию из токенов, определяя порядок их взаимодействия. Графически это можно представить следующим образом:

Не спешите хвататься за голову, для создания лексеров и парсеров есть специальные библиотеки и приложения, которые снимут эту достаточно сложную часть работы.

Создайте стандартную библиотеку

Вне зависимости от того, есть ли у языка встроенные возможности для исполнения базового функционала или требуются внешние библиотеки, вам необходимо создать ряд функций, на которых можно было продемонстрировать хотя бы в общих чертах все заложенные возможности.

Напишите уйму тестов

Создать язык – не так сложно, как заставить его нормально работать. Определить работоспособность всех механизмов языка вам помогут специальные тесты, очерчивающие границы «можно» и «нельзя» и не вызывающие при этом исключительных ситуаций, которые поставят возможности языка в тупик.

Опубликуйте язык

Когда язык будет готов – не смейте прятать его в стол. Даже если мировое господство – не ваша цель, публикация поможет собрать отзывы, найти единомышленников для дальнейших усовершенствований языка. Ну и в конце концов, этим вы сделаете личный вклад в программирование.


3 апр 18, 14:30
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 8

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru